package com.yuke.cloud.service.wmc.service;

import com.github.pagehelper.PageInfo;
import com.yuke.cloud.common.core.support.IService;
import com.yuke.cloud.service.api.cmc.dto.CmsSecKillSkuDto;
import com.yuke.cloud.service.api.pmc.dto.ProdSpecInfoExDto;
import com.yuke.cloud.service.api.pmc.dto.ProdStorageDto;
import com.yuke.cloud.service.api.wmc.dto.StorageDto;
import com.yuke.cloud.service.api.wmc.dto.StorageSpecInfoDto;
import com.yuke.cloud.service.api.wmc.dto.WareProductDto;
import com.yuke.cloud.service.wmc.dto.WmsStatisticsDto;
import com.yuke.cloud.service.wmc.dto.WmsStorageDto;
import com.yuke.cloud.service.wmc.dto.WmsStoragePicDto;
import com.yuke.cloud.service.wmc.dto.WmsStorageProdDto;
import com.yuke.cloud.service.wmc.entity.WmsStorage;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;


/**
 * Created by zys on 2018/11/26.
 */
public interface WmsStorageService extends IService<WmsStorage> {

    List<WmsStorage> getStorageNum(List<StorageDto> dto);

    CompletableFuture<Integer> addGoodsStorage(ProdStorageDto prodStorageDto,List<ProdSpecInfoExDto> prodSpecInfoExDtoList);



    void updatewarehousestorageznum(Long transferWarehouseId, Long transferSpecId, Integer transferNum);

    void updatewarehousestoragefnum(Long beTransferedWarehouseId, Long transferSpecId, int i);

    Map<Long, Integer> getCityStockCount(List<Long> specIds, Long regionCityId);
    Map<Long, Integer> getCityAllStockCount(Long regionCityId);

    void updateWarehouseStorage(Long warehouseId, Long specId, Integer number, Integer lockNumber);

	void updateStorageData(Long warehouseId, Long specId, Integer number, Integer PurchasePrice, Integer quality);

    List<CmsSecKillSkuDto> getSecKillSkus();

    List<WareProductDto> getRemoteStockCount(List<Long> specIds, Long localWarehouseId);

    Map<Long, Integer> getWarehouseStockCount(Long warehouseId, List<Long> specIds);
    void addGoodsStorage(List<WmsStorageDto> list);

    List<WmsStorage> getStorageInfo();

    void updateByStorageDtos(List<StorageDto> storageDtos);

    List<WmsStorageProdDto> getStorageSpec(WmsStorageProdDto wmsStorageProdDto);

    List<WmsStorage> getWmsStorageByPic(WmsStoragePicDto wmsStoragePicDto);

    List<WareProductDto> getInfoWarehouseIds(List<Long> specIds);

    List<StorageSpecInfoDto> getWmsSpecInfoBySpecIds(Long warehouseId, List<Long> specIds);

    List<WmsStorage> getWmsStorageByCondition(WmsStoragePicDto wmsStoragePicDto);

    List<StorageDto> getStorageInfoByStorageId(List<Long> storageIds);


    PageInfo<WmsStatisticsDto> storageAndUnitPrice(WmsStatisticsDto wmsStatisticsDto, Integer page, Integer size);
}
